#!/usr/bin/env node

const fs = require('fs');
const path = require('path');
const glob = require('glob');
const util = require('util');

// 将回调函数转换为Promise
const readFileAsync = util.promisify(fs.readFile);
const writeFileAsync = util.promisify(fs.writeFile);
const globAsync = util.promisify(glob);

// 要添加的代码片段
const codeToAdd = `{% if ec_payment %}
                {% include quick_ec_payment , { block_id:block_id,action:"product_detail" } %}
            {% endif %}`;

async function main() {
  try {
    // 查找所有匹配的product_detail.liquid文件
    const files = await globAsync('./src/theme/**/sections/product_detail.liquid');

    console.log(`找到 ${files.length} 个product_detail.liquid文件`);

    // 处理每个文件
    for (const filePath of files) {
      await processFile(filePath);
    }

    console.log('所有文件处理完成');
  } catch (error) {
    console.error('执行过程中出错:', error);
    process.exit(1);
  }
}

async function processFile(filePath) {
  console.log(`\n处理文件: ${filePath}`);

  try {
    // 读取文件内容
    const content = await readFileAsync(filePath, 'utf8');

    // 检查文件是否已包含目标代码
    if (content.includes('{% if ec_payment %}')) {
      console.log('✓ 文件已包含所需代码片段');
      return;
    }

    // 查找 {% if payment %} 的位置
    const paymentTagMatch = content.match(/\{%\s*if\s+payment\s*%\}/);

    if (!paymentTagMatch) {
      console.log('⚠️ 未找到 {% if payment %} 标签');
      return;
    }

    // 获取插入位置
    const insertPosition = paymentTagMatch.index;

    // 构建新内容
    const newContent =
      content.slice(0, insertPosition) +
      codeToAdd + '\n\t\t\t\t\t\t' +
      content.slice(insertPosition);

    // 写入文件
    await writeFileAsync(filePath, newContent, 'utf8');

    console.log('✅ 已成功更新文件');
    console.log(`   在位置 ${insertPosition} 添加了EC支付代码块`);
  } catch (error) {
    console.error('❌ 处理文件失败:', error);
  }
}

main();
